package com.fangyi.yunmusic.service;

import com.fangyi.yunmusic.pojo.Playlist;
import com.fangyi.yunmusic.pojo.vo.PlaylistDetailVO;
import com.fangyi.yunmusic.pojo.vo.PlaylistVO;
import com.fangyi.yunmusic.utils.PagedResult;

public interface PlaylistService {

    /**
     * 添加歌单，返回歌单ID
     * @param playlist
     */
    public String insertPlaylist(Playlist playlist);


    /**
     * 删除歌单
     * @param playlistId
     */
    public void deletePlaylist(String playlistId);

    /**
     * 更新歌单
     * @param playlist
     */
    public void updatePlaylist(Playlist playlist);

    /**
     * 分页获取歌单
     * @param page 页码
     * @param pageSize 每页的条数
     * @return
     */
    public PagedResult selectPlaylist(int page, int pageSize);

    /**
     * 分页获取歌单VO(内含用户VO)
     * @param page
     * @param pageSize
     * @return
     */
    public PagedResult selectPlaylistVO(Integer page, Integer pageSize, String order);


    /**
     * 获取歌单详情（包含歌曲列表）
     * @param playlistId
     * @return
     */
    public PlaylistDetailVO getPlaylistDetailVO(String playlistId);

    /**
     * 根据用户Id查询用户创建的歌单列表（歌单为歌单VO）
     * @param userId
     * @return
     */
    public PagedResult selectCreatedPlayListByUserId(String userId, Integer pageNum, Integer pageSize);

    /**
     * 根据用户Id查询用户收藏的歌单列表（歌单为歌单VO）
     * @param userId
     * @return
     */
    public PagedResult selectSubscribedPlayListByUserId(String userId, Integer pageNum, Integer pageSize);

    /**
     * 用户为歌单添加歌曲
     * @param userId
     * @param playlistId
     * @param songId
     */
    public void addSongForPlaylist(String userId, String playlistId, String songId);

    /**
     * 用户为歌单删除歌曲
     * @param userId
     * @param playlistId
     * @param songId
     */
    public void deleteSongForPlaylist(String userId, String playlistId, String songId);


    /**
     * 播放次数加1，返回播放次数
     * @param playlistId
     */
    public Integer addPlayCount(String playlistId);

    /**
     * 根据ID查询歌单
     * @param playlistId
     * @return
     */
    public PlaylistVO getPlaylistVO(String playlistId);

    public Integer getPlaylistCount();

}
